package com.sharp.kernel.mybatis.repository.inf;

import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.RowBounds;
import tk.mybatis.mapper.entity.Example;

import java.util.List;
import java.util.Map;

/**
 * Title: SqlSelectRepository
 * Description: Copyright: Copyright (c) 2019 Company: BHFAE
 *
 * @author Sharp
 * @date 2022/6/8 15:53
 */
public interface SqlSelectRepository<T> {

    List<T> select();

    PageInfo<T> select(int currentPage, int pageSize);

    List<T> selectValid();

    PageInfo<T> selectValid(int currentPage, int pageSize);

    PageInfo<T> select(PageInfo<T> pageInfo);

    PageInfo<T> selectValid(PageInfo<T> pageInfo);

    T selectByPrimaryKey(Object primaryKey);

    List<T> select(T entity);

    PageInfo<T> select(T entity, int currentPage, int pageSize);

    PageInfo<T> select(T entity, PageInfo<T> pageInfo);

    List<T> select(T entity, RowBounds rowBounds);

    List<T> select(Example example);

    PageInfo<T> select(Example example, int currentPage, int pageSize);

    PageInfo<T> select(Example example, PageInfo<T> pageInfo);

    List<T> select(Example example, RowBounds rowBounds);

    List<T> select(Map<String, Object> propertyMap);

    PageInfo<T> select(Map<String, Object> propertyMap, int currentPage, int pageSize);

    PageInfo<T> select(Map<String, Object> propertyMap, PageInfo<T> pageInfo);

    List<T> select(Map<String, Object> propertyMap, RowBounds rowBounds);

    List<T> select(String propertyName, List<?> propertyList);

    PageInfo<T> select(String propertyName, List<?> propertyList, int currentPage, int pageSize);

    List<T> select(String propertyName, List<?> propertyList, RowBounds rowBounds);

    T selectOne(T entity);

    T selectOne(Example example);

    T selectOne(Map<String, Object> propertyMap);


}
